home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / OS / FWODMisc / Sources / FWAcquir.cpp next >
Encoding:
Text File  |  1996-08-16  |  10.7 KB  |  352 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWAcquir.cpp
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Copyright:            (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWOS.hpp"
  11.  
  12. #ifndef FWACQUIR_H
  13. #include "FWAcquir.h"
  14. #endif
  15.  
  16. #ifndef FWMEMMGR_H
  17. #include "FWMemMgr.h"
  18. #endif
  19.  
  20. #ifndef FWPRIDEB_H
  21. #include "FWPriDeb.h"
  22. #endif
  23.  
  24. #ifndef SOM_ODStorageUnitView_xh
  25. #include <SUView.xh>
  26. #endif
  27.  
  28. #ifndef SOM_ODStorageUnitCursor_xh
  29. #include <SUCursor.xh>
  30. #endif
  31.  
  32. #ifndef SOM_ODRefCntObject_xh
  33. #include <RefCtObj.xh>
  34. #endif
  35.  
  36. #ifndef SOM_ODWindow_xh
  37. #include "Window.xh"
  38. #endif
  39.  
  40. #ifndef SOM_ODPart_xh
  41. #include "Part.xh"
  42. #endif
  43.  
  44. #ifndef SOM_ODFrame_xh
  45. #include "Frame.xh"
  46. #endif
  47.  
  48. #ifndef SOM_ODShape_xh
  49. #include <Shape.xh>
  50. #endif
  51.  
  52. #ifndef SOM_ODTransform_xh
  53. #include <Trnsform.xh>
  54. #endif
  55.  
  56. #ifndef SOM_ODStorageUnit_xh
  57. #include <StorageU.xh>
  58. #endif
  59.  
  60. #ifndef SOM_ODStorageUnitView_xh
  61. #include <SUView.xh>
  62. #endif
  63.  
  64. #ifndef SOM_ODStorageUnitCursor_xh
  65. #include <SUCursor.xh>
  66. #endif
  67.  
  68. #ifndef SOM_ODMenuBar_xh
  69. #include <MenuBar.xh>
  70. #endif
  71.  
  72. #ifndef SOM_ODDraft_xh
  73. #include <Draft.xh>
  74. #endif
  75.  
  76. #ifndef SOM_ODContainer_xh
  77. #include <ODCtr.xh>
  78. #endif
  79.  
  80. #ifndef SOM_ODDocument_xh
  81. #include <Document.xh>
  82. #endif
  83.  
  84. #if defined(__MWERKS__) && GENERATING68K
  85. // A hack to work around a bug
  86. #pragma import list somGetGlobalEnvironment
  87. #endif
  88.  
  89. //========================================================================================
  90. //    Runtime Informations
  91. //========================================================================================
  92.  
  93. #ifdef FW_BUILD_MAC    
  94. #pragma segment fwodmisc
  95. #endif
  96.  
  97. //========================================================================================
  98. //    class FW_CAcquiredODRefCntObject
  99. //========================================================================================
  100.  
  101. FW_DEFINE_AUTO(FW_CAcquiredODRefCntObject)
  102.  
  103. //----------------------------------------------------------------------------------------
  104. // FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject
  105. //----------------------------------------------------------------------------------------
  106.  
  107. FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject() :
  108.     fODObject(NULL)
  109. {
  110.     FW_END_CONSTRUCTOR
  111. }
  112.  
  113. //----------------------------------------------------------------------------------------
  114. // FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject
  115. //----------------------------------------------------------------------------------------
  116.  
  117. FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject(ODRefCntObject* odObject) :
  118.     fODObject(odObject)
  119. {
  120.     FW_END_CONSTRUCTOR
  121. }
  122.  
  123. //----------------------------------------------------------------------------------------
  124. // FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject
  125. //----------------------------------------------------------------------------------------
  126.  
  127. FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject(const FW_CAcquiredODRefCntObject& other) :
  128.     fODObject(other.fODObject)
  129. {
  130. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  131.     fODObject->Acquire(somGetGlobalEnvironment());
  132. #endif
  133.     FW_END_CONSTRUCTOR
  134. }
  135.  
  136. //----------------------------------------------------------------------------------------
  137. // FW_CAcquiredODRefCntObject::~FW_CAcquiredODRefCntObject
  138. //----------------------------------------------------------------------------------------
  139.  
  140. FW_CAcquiredODRefCntObject::~FW_CAcquiredODRefCntObject()
  141. {
  142.     FW_START_DESTRUCTOR
  143.     
  144. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  145.     if (fODObject)
  146.         fODObject->Release(somGetGlobalEnvironment());
  147. #endif
  148. }
  149.  
  150. //----------------------------------------------------------------------------------------
  151. // FW_CAcquiredODRefCntObject::AcquireAndAssign
  152. //----------------------------------------------------------------------------------------
  153.  
  154. FW_CAcquiredODRefCntObject* FW_CAcquiredODRefCntObject::AcquireAndAssign(ODRefCntObject* newObject)
  155. {
  156. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  157.     if (fODObject != newObject)
  158.     {
  159.         Environment* ev = somGetGlobalEnvironment();
  160.         
  161.         if (fODObject != NULL)
  162.             fODObject->Release(ev);
  163.         
  164.         if (newObject != NULL)
  165.             newObject->Acquire(ev);
  166.     }
  167. #endif
  168.     
  169.     fODObject = newObject;
  170.     
  171.     return this;
  172. }
  173.  
  174. //----------------------------------------------------------------------------------------
  175. // FW_CAcquiredODRefCntObject::Assign
  176. //----------------------------------------------------------------------------------------
  177.  
  178. FW_CAcquiredODRefCntObject* FW_CAcquiredODRefCntObject::Assign(ODRefCntObject* newObject)
  179. {
  180. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  181.     if (fODObject != NULL && fODObject != newObject)
  182.         fODObject->Release(somGetGlobalEnvironment());
  183. #endif
  184.     
  185.     fODObject = newObject;
  186.     
  187.     return this;
  188. }
  189.  
  190. //========================================================================================
  191. //    class FW_CAcquireODStorageUnitView
  192. //========================================================================================
  193.  
  194. FW_DEFINE_AUTO(FW_CAcquireODStorageUnitView)
  195.  
  196. //----------------------------------------------------------------------------------------
  197. // FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView
  198. //----------------------------------------------------------------------------------------
  199.  
  200. FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su, 
  201.                                                             ODPropertyName propertyName, 
  202.                                                             ODPositionCode propertyPosCode, 
  203.                                                             ODValueType valueType, 
  204.                                                             ODValueIndex valueIndex, 
  205.                                                             ODPositionCode valuePosCode) :
  206.     fSUView(NULL)
  207. {
  208.     su->Focus(ev, propertyName, propertyPosCode, valueType, valueIndex, valuePosCode);
  209.     fSUView = su->CreateView(ev);
  210.     FW_END_CONSTRUCTOR
  211. }
  212.  
  213. //----------------------------------------------------------------------------------------
  214. // FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView
  215. //----------------------------------------------------------------------------------------
  216.  
  217. FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su) :
  218.     fSUView(NULL)
  219. {
  220.     fSUView = su->CreateView(ev);
  221.     FW_END_CONSTRUCTOR
  222. }
  223.  
  224. //----------------------------------------------------------------------------------------
  225. // FW_CAcquireODStorageUnitView::~FW_CAcquireODStorageUnitView
  226. //----------------------------------------------------------------------------------------
  227.  
  228. FW_CAcquireODStorageUnitView::~FW_CAcquireODStorageUnitView()
  229. {
  230.     FW_START_DESTRUCTOR
  231.     delete fSUView;
  232. }
  233.  
  234. //========================================================================================
  235. //    class FW_CAcquireODPropertyName
  236. //========================================================================================
  237.  
  238. FW_DEFINE_AUTO(FW_CAcquireODPropertyName)
  239.  
  240. //----------------------------------------------------------------------------------------
  241. // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
  242. //----------------------------------------------------------------------------------------
  243.  
  244. FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnit* su) :
  245.     fPropName(NULL)
  246. {
  247.     fPropName = su->GetProperty(ev);
  248.     FW_END_CONSTRUCTOR
  249. }
  250.  
  251. //----------------------------------------------------------------------------------------
  252. // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
  253. //----------------------------------------------------------------------------------------
  254.  
  255. FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitView* suView) :
  256.     fPropName(NULL)
  257. {
  258.     fPropName = suView->GetProperty(ev);
  259.     FW_END_CONSTRUCTOR
  260. }
  261.  
  262. //----------------------------------------------------------------------------------------
  263. // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
  264. //----------------------------------------------------------------------------------------
  265.  
  266. FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitCursor* suCursor) :
  267.     fPropName(NULL)
  268. {
  269.     suCursor->GetProperty(ev, &fPropName);
  270.     FW_END_CONSTRUCTOR
  271. }
  272.  
  273. //----------------------------------------------------------------------------------------
  274. // FW_CAcquireODPropertyName::~FW_CAcquireODPropertyName
  275. //----------------------------------------------------------------------------------------
  276.  
  277. FW_CAcquireODPropertyName::~FW_CAcquireODPropertyName()
  278. {
  279.     FW_START_DESTRUCTOR
  280.     if (fPropName != NULL)
  281.         FW_CMemoryManager::FreeBlock(fPropName);
  282. }
  283.  
  284. //========================================================================================
  285. //    class FW_CAcquireODType
  286. //========================================================================================
  287.  
  288. FW_DEFINE_AUTO(FW_CAcquireODType)
  289.  
  290. //----------------------------------------------------------------------------------------
  291. // FW_CAcquireODType::FW_CAcquireODType
  292. //----------------------------------------------------------------------------------------
  293.  
  294. FW_CAcquireODType::FW_CAcquireODType(ODType type) :
  295.     fODType(type)
  296. {
  297.     FW_ASSERT(type);
  298.     
  299.     FW_END_CONSTRUCTOR
  300. }
  301.  
  302. //----------------------------------------------------------------------------------------
  303. // FW_CAcquireODType::~FW_CAcquireODType
  304. //----------------------------------------------------------------------------------------
  305.  
  306. FW_CAcquireODType::~FW_CAcquireODType()
  307. {
  308.     FW_START_DESTRUCTOR
  309.     
  310.     FW_ASSERT(fODType);
  311.     FW_CMemoryManager::FreeBlock(fODType);
  312.     fODType = NULL;
  313. }
  314.  
  315. //========================================================================================
  316. //    FW_CopyAndRelease
  317. //========================================================================================
  318.  
  319. //########################################################################################
  320. // SCpp Hack
  321. // Work around SCpp 8.0.3 bug - importing overloaded functions doesn't work.
  322. // Replace overloaded functions with normal functions with different names.
  323. // Use inline overloaded functions which turn around and call the renamed
  324. // functions so client code isn't affected.
  325. //########################################################################################
  326.  
  327. //----------------------------------------------------------------------------------------
  328. // ODShape
  329. //----------------------------------------------------------------------------------------
  330.  
  331. ODShape* FW_PrivCopyAndRelease_Shape(Environment* ev, ODShape* shapeToCopy)
  332. {
  333.     FW_ASSERT(shapeToCopy != NULL);
  334.     FW_ASSERT(shapeToCopy->GetRefCount(ev) >= 1);
  335.     
  336.     FW_CAcquiredODShape aqShapeToCopy(shapeToCopy); 
  337.     return aqShapeToCopy->Copy(ev);
  338. }
  339.  
  340. //----------------------------------------------------------------------------------------
  341. // ODTransform
  342. //----------------------------------------------------------------------------------------
  343.  
  344. ODTransform* FW_PrivCopyAndRelease_Transform(Environment* ev, ODTransform* transformToCopy)
  345. {
  346.     FW_ASSERT(transformToCopy != NULL);
  347.     FW_ASSERT(transformToCopy->GetRefCount(ev) >= 1);
  348.     
  349.     FW_CAcquiredODTransform aqTransformToCopy(transformToCopy); 
  350.     return transformToCopy->Copy(ev);
  351. }
  352.